// 
const express = require('express');
const app = express();
app.listen(3000, () => {
    console.log('服务器已开启');
});

// 
const path = require('path');
const fs = require('fs');
const time = require('time-stamp');
const url = require('url');
const formidable = require('formidable');

//    获取json的路径
let dir = path.join(__dirname, '/persons.json');
// 读取json的参数
let data = fs.readFileSync(dir, 'utf-8');
data = JSON.parse(data);
// console.log(data);

// 静态化页面
app.use(express.static(path.join(__dirname, 'static')));
// 接收post 提交的参数
app.use(express.urlencoded({ extended: false }));
app.use(express.json());

// 时间中间件
app.use((req, res, next) => {
    req.time = time('YYYY年MM月DD日 HH:mm:ss');
    next();
});




// 渲染页面
app.get('/register', (req, res) => {
    res.sendFile(path.join(__dirname, '/register.html'));
})



//post提交
app.post('/register', (req, res, next) => {
    // 接收文件参数信息
    let haha = formidable({
        // 保存到指定文件夹
        uploadDir: path.join(__dirname, 'upload'),
        // 保留后缀名
        keepExtensions: true
    });
    // 文件名更改
    haha.parse(req, (err, fields, fiels) => {
        console.log(err, fields, fiels);
        // 获取输入框的内容
        let da = fields;
        console.log(da);
        if (err) {
            res.send(err);
            return;
        }
        // 旧路径
        let oldpath = fiels.pic.filepath;
        // 新路径
        let newpath = path.join(__dirname, 'upload', fiels.pic.originalFilename);
        //文件名替换
        fs.renameSync(oldpath, newpath);


        // 提交文件url路径
        let urll = path.join('/upload/fiels.pic.newFilename')
        // let urll = path.join(upload,'/fiels.pic.originalFilename')


        // 获取参数
        let { tel, pass, pass2 } = da;

        //输入框不能为空
        if (!tel || !pass || !pass2) {
            next('输入框不能为空');
            return;
        };

        // 判断两次的密码是否一致
        if (pass != pass2) {
            next('两次输入内容不一致');
            return;
        }
        // // 判断上传文件不能为空
        if (!fiels.pic.originalFilename) {
            next('没有传文件');
            return;
        }
        // 判断用户名是否存在
        let isregister = data.find(value => value.username == tel);

        // 判断
        if (isregister) {
            next('用户名已存在')
        } else {
            // 添加 转成对应格式
            data.push({ username: tel, password: pass, time: req.time, url: urll });
            // 写入
            fs.writeFileSync(dir, JSON.stringify(data))
            // 响应
            res.send('注册成功')
        }

    })


})
// 逻辑错误统一处理
app.use((err, req, res, next) => {
    res.send({ code: 400, msg: err })
})


